package com.scholarship.common.utils;


import java.io.*;

/**
 * @author: huanghao
 * @date: 2021/5/10 16:24
 * @description: 文件工具类，提供文件相关操作静态函数
 * @modifiedBy:
 */
public class FileUtil {
    /*
    * 文件上传到本地路径
    * fileBytes : byte[]  要上传保存的文件的字节数组
    * filePath : String  存储文件路径
    * fileName : String  存储文件名
    * return:String 返回文件url
    */
    public static String uploadFile(byte[] fileBytes, String filePath, String fileName) throws IOException {
        File targetFilePath = new File(filePath);
        if(!targetFilePath.exists()) {
            targetFilePath.mkdirs();
        }

        String fileUrl = filePath + fileName;
        FileOutputStream out = new FileOutputStream(fileUrl);
        out.write(fileBytes);
        out.flush();
        out.close();
        return fileUrl;
    }

    /*
    * 从本地路径获取文件，用于辅助实现文件下载功能
    * 目前初步思路是返回一个byte数组，但可能有问题，以后实际用了再慢慢改
    * 参考资料地址：
    * 1、https://blog.csdn.net/user2025/article/details/107300831
    * 2、https://www.cnblogs.com/kzyuan/p/12493993.html
    *
    * filePath : String  文件在本地的存储路径
    * fileName : String  文件名
    * */
    public static byte[] getFileFromLocal(String filePath, String fileName) throws IOException {
        File targetFile = new File(filePath + fileName);
        if (targetFile.exists()) {
            FileInputStream fileInputStream = new FileInputStream(targetFile);
            InputStream fis = new BufferedInputStream(fileInputStream);
            byte[] buffer = new byte[fis.available()];
            fis.read(buffer);
            fis.close();
            return buffer;
        }
        else {
            System.out.println("目标文件不存在");
            throw new IOException();
        }
    }
}
